package com.suxin.plugin.intergration.manager.plugin;

import com.suxin.plugin.intergration.manager.PluginWrapper;

import java.nio.file.Path;
import java.util.List;

/**
 * @author Tang
 * @classname PluginManager
 * @description [ 插件管理器，，定义插件的启动，停止 ]
 * @date 2022/6/26 23:08
 */
public interface PluginManager {

    /**
     * getPlugins
     * @return List<PluginWrapper>
     */
    List<PluginWrapper> getPlugins();

    public List<PluginWrapper> getResolvePlugins();

    public List<PluginWrapper> getStartedPlugins();

    /**
     * getPlugins
     * @param pluginId pluginId
     * @return PluginWrapper
     */
    PluginWrapper getPlugins(String pluginId);

    /**
     * loadPlugin
     */
    void loadPlugins();

    /**
     * startPlugin
     */
    void startPlugins();

    /**
     * stopPlugin
     */
    void stopPlugins();

    /**
     * load Plugin
     * @param pluginPath
     * @return
     */
    String loadPlugins(Path pluginPath);

    /**
     * getPluginRoot
     * @return
     */
    Path getPluginRoot();

}
